var canvas = document.querySelector("#canvas");

var restartEle = document.querySelector('.restart');
var restartBtn = document.querySelector('.restart-btn');
var scoreEle = document.querySelector('.restart-msg span');

restartBtn.onclick = function(){
  game.restart()
}

var scoreEle
// 设置canvas的宽高
canvas.width = WIDTH;
canvas.height = HEIGHT;

var ctx = canvas.getContext("2d");

//  绑定鼠标移动事件的方法
player.init(canvas);

// 用来存放金币对象的数组
var coinList = [];
var shitList = [];
var bombList = [];

// 创建一个game的对象
var game = {
  timer: 0,
  count: 0,   // 游戏中的一个计数器
  play: function () {
    // 游戏的循环
    game.timer = setInterval(() => {
      game.clear();
      game.count ++

      // 绘制圆圈
      drawClrcle(ctx);

      // 只有当游戏中的计数器能够整除30的时候， 我们才生成一个新的金币对象， 这样就可以控制金币出现的频率了  
      if(game.count % 30 === 0) {
        coinList.push(new Coin(getRandom(0, WIDTH - ITEM_WIDTH), -ITEM_HEIGHT, ITEM_WIDTH, ITEM_HEIGHT, COIN_SPEED))
      }
    
      //  遍历金币数组，把所有的金币绘制到画布上。
      for(var i = 0; i < coinList.length; i++) {
        var coin = coinList[i];

        // 检测 道具有没有和玩家发生碰撞
        coin.checkCollide(player);

        // 如果发现该对象 需要被回收掉，就进行回收
        if(coin.isRecycle) {
          coinList.splice(i, 1);
          i--;
        }

        coin.draw(ctx);
        coin.move()
      }

      // 只有当游戏中的计数器能够整除30的时候， 我们才生成一个新的粑粑对象， 这样就可以控制金币出现的频率了  
      if(game.count % 30 === 0) {
        shitList.push(new Shit(getRandom(0, WIDTH - ITEM_WIDTH), -ITEM_HEIGHT, ITEM_WIDTH, ITEM_HEIGHT, SHIT_SPEED))
      }
    
      for(var i = 0; i < shitList.length; i++) {
        var shit = shitList[i];

        // 检测 道具有没有和玩家发生碰撞
        shit.checkCollide(player);

        // 如果发现该对象 需要被回收掉，就进行回收
        if(shit.isRecycle) {
          shitList.splice(i, 1);
          i--;
        }

        shit.draw(ctx);
        shit.move()
      }
      if(game.count % 70 === 0) {
        bombList.push(new Bomb(getRandom(0, WIDTH - ITEM_WIDTH), -ITEM_HEIGHT, ITEM_WIDTH, ITEM_HEIGHT, BOMB_SPEED))
      }
    
      for(var i = 0; i < bombList.length; i++) {
        var bomb = bombList[i];

        // 检测 道具有没有和玩家发生碰撞
        bomb.checkCollide(player);

        // 如果发现该对象 需要被回收掉，就进行回收
        if(bomb.isRecycle) {
          bombList.splice(i, 1);
          i--;
        }

        bomb.draw(ctx);
        bomb.move()
      }

      player.draw(ctx);
      player.drawHP(ctx);
      player.drawScore(ctx);
      game.checkDie();

    
    }, 1000 / 60);
  },
  clear: function () {
    // 清除游戏中的画面
    ctx.fillStyle = "skyblue";
    ctx.fillRect(0, 0, WIDTH, HEIGHT);
  },
  checkDie: function (){
    if(player.HP <= 0){
      restartEle.style.display = 'block';
      scoreEle.innerText = player.score;
      player.die(canvas)
    }
  },
  //重新开始游戏
  restart:function(){
    restartEle.style.display = 'none';
    player.init(canvas);
    coinList = [];
    shitList = [];
    bombList = [];
  }


};